package ma.co.ba.BusinessApplications.business.products.impl;

import java.util.List;

import ma.co.ba.BusinessApplications.business.products.ProduitBusiness;
import ma.co.ba.BusinessApplications.dao.commons.DAOServices;
import ma.co.ba.BusinessApplications.model.FamilleDeProduit;
import ma.co.ba.BusinessApplications.model.Produit;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service("produitBusiness")
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class ProduitBusinessImpl implements ProduitBusiness {

	@Autowired
	DAOServices daoServices;

	@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
	public void saveProduit(Produit produit) {
		daoServices.saveEntity(produit);
	}

	public Produit getProduitById(int id) {
		return (Produit) daoServices.getEntityById2(Produit.class, new Integer(
				id));
	}

	public List<Produit> getAllProduits() {
		List<Produit> produits = null;
		produits = (List<Produit>) daoServices.getEntities(Produit.class);
		return produits;
	}

	@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
	public void saveFamilleProduit(FamilleDeProduit familleDeProduit) {
		daoServices.saveEntity(familleDeProduit);
	}

	public FamilleDeProduit getFamilleProduitById(int id) {
		return (FamilleDeProduit) daoServices.getEntityById2(
				FamilleDeProduit.class, new Integer(id));
	}

	public List<FamilleDeProduit> getAllFamilleProduits() {
		return daoServices.getEntities(FamilleDeProduit.class);
	}

	public List<Produit> getAllProduitsParIdFamille(int id) {
		FamilleDeProduit familleDeProduit = (FamilleDeProduit) daoServices
				.getEntityById2(FamilleDeProduit.class, id);
		
		System.out.println(familleDeProduit.getProduits());
		for (Produit produit : familleDeProduit.getProduits()) {
			System.out.println("product name is : " + produit.getProductName());
		}
		
		return familleDeProduit.getProduits();
	}

}
